/**
 * opportunitylog服务
 *
 * @author sxf
 * @email sxf02615@163.com
 * @date 2025/1/15
 */
package com.sxf.crm.service;


import com.sxf.crm.dto.OpportunityLogDTO;
import com.sxf.crm.entity.OpportunityLog;
import com.sxf.crm.entity.Opportunity;
import com.sxf.crm.entity.User;
import com.sxf.crm.enums.OpportunityStatus;
import java.util.List;

public interface OpportunityLogService {

    OpportunityLog create(OpportunityLog log);

    OpportunityLog logStatusChange(Opportunity opportunity, User operator, OpportunityStatus before, OpportunityStatus after);

    OpportunityLog logAssign(Opportunity opportunity, User operator, User newOwner, String remark);

    OpportunityLog logCreate(Opportunity opportunity, User creator, String opportunityName);

    OpportunityLog logFollowUp(Opportunity opportunity, User operator, String followUpContent);

    List<OpportunityLogDTO> findByOpportunityId(Long opportunityId);

    OpportunityLog logAccept(Opportunity opportunity, User operator, User owner);

    OpportunityLog logReject(Opportunity opportunity, User operator, User owner, String rejectReason);

    OpportunityLog logRecycle(Opportunity opportunity, User operator, String recycleReason);

    OpportunityLog logLost(Opportunity opportunity, User operator, String lostReason);

    OpportunityLog logWon(Opportunity opportunity, User operator, String remark);

    OpportunityLog logNegotiating(Opportunity opportunity, User operator, String remark);

    OpportunityLog logPendingDecision(Opportunity opportunity, User operator);

    OpportunityLog logClaim(Opportunity opportunity, User operator, User newOwner, String remark);
}
